﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO_MechSys;
using BLL_MechSys;

namespace FORMS_MechSys
{
    public partial class frmGastoCadastro : Form
    {
        System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmGastoCadastro));

        DataTable dataTableGridView = new DataTable();
        List<DTOGasto> ListGastos = new List<DTOGasto>();

        DTOGasto dtoGastoADD = new DTOGasto();
        BLLGasto bllGasto = new BLLGasto();
        BLLFornecedor bllFornecedor = new BLLFornecedor();
        BLLCor bllCor = new BLLCor();
        DTOCor dtoCorPrincipal = new DTOCor();
        DTOCor dtoCorFundo = new DTOCor();
        DTOCor dtoCorLetra = new DTOCor();
        DTOCor dtoCorDataGrid = new DTOCor();

        
        

        public frmGastoCadastro()
        {
            InitializeComponent();
            SetColors();
            PopulaGrid();
            Habilitar(false);
        }

        private void SetColors()
        {
            dtoCorPrincipal = bllCor.Buscar("Principal");

            tlpMenuStripCenter.BackColor = tlpMenuStripLeft.BackColor = btn_pesquisar.BackColor = btnBuscarFornecedor.BackColor =
                btnCadastrarFornecedor.BackColor = btnCancelar.BackColor = btnEditar.BackColor = btnExcluir.BackColor =
                tlpMenuStripRigth.BackColor = btnNovo.BackColor = btnSalvar.BackColor = tlp_dados.BackColor = btnSair.BackColor = tableLayoutPanel6.BackColor =
                tlpBotoes.BackColor = dtoCorPrincipal.Cor;


            dtoCorFundo = bllCor.Buscar("Fundo");
            tableLayoutPanel1.BackColor = dtoCorFundo.Cor;

            dtoCorDataGrid = bllCor.Buscar("DataGrid");
            dtGridProdutos.BackgroundColor = dtoCorDataGrid.Cor;

            dtoCorLetra = bllCor.Buscar("Letra");
            label1.ForeColor = label12.ForeColor = label14.ForeColor = label2.ForeColor = label3.ForeColor = label25.ForeColor =
                label5.ForeColor = label6.ForeColor = rbttRepetirNao.ForeColor = rbttRepetirSim.ForeColor = btnSair.ForeColor = btn_pesquisar.ForeColor =
                rbttValorFixoNao.ForeColor = rbttValorFixoSim.ForeColor = btnBuscarFornecedor.ForeColor = btnCadastrarFornecedor.ForeColor =
                btnCancelar.ForeColor = btnEditar.ForeColor = btnExcluir.ForeColor = btnNovo.ForeColor = btnSalvar.ForeColor =
                dtoCorLetra.Cor;


        }

        //EFEITOS
        #region
        private void btnNovo_EnabledChanged(object sender, EventArgs e)
        {
            if (btnNovo.Enabled)
            {
                btnNovo.BackColor = dtoCorPrincipal.Cor;
                btnNovo.ForeColor = dtoCorLetra.Cor;
                this.btnNovo.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));
            }
            else
                btnNovo.BackColor = dtoCorFundo.Cor;

        }

        private void btnEditar_EnabledChanged(object sender, EventArgs e)
        {
            if (btnEditar.Enabled)
            {
                btnEditar.BackColor = dtoCorPrincipal.Cor;
                btnEditar.ForeColor = dtoCorLetra.Cor;
                this.btnEditar.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));

            }
            else
                btnEditar.BackColor = dtoCorFundo.Cor;
        }

        private void btnCancelar_EnabledChanged(object sender, EventArgs e)
        {
            if (btnCancelar.Enabled)
            {
                btnCancelar.BackColor = dtoCorPrincipal.Cor;

                btnCancelar.ForeColor = dtoCorLetra.Cor;
                this.btnCancelar.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));

            }
            else
                btnCancelar.BackColor = dtoCorFundo.Cor;
        }

        private void btnExcluir_EnabledChanged(object sender, EventArgs e)
        {

        }

        private void btnSalvar_EnabledChanged(object sender, EventArgs e)
        {
            if (btnSalvar.Enabled)
            {
                btnSalvar.BackColor = dtoCorPrincipal.Cor;
                btnSalvar.ForeColor = dtoCorLetra.Cor;
                this.btnSalvar.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));
            }
            else
                btnSalvar.BackColor = dtoCorFundo.Cor;
        }

        private void btnEditar_MouseLeave(object sender, EventArgs e)
        {
            if (btnEditar.Enabled)
            {
                btnEditar.BackColor = dtoCorPrincipal.Cor;
                btnEditar.ForeColor = dtoCorLetra.Cor;
                this.btnEditar.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));
            }
        }

        private void btnEditarkkkkkkk(object sender, EventArgs e)
        {
            btnEditar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnEditar.ForeColor = Color.Black;
            this.btnEditar.BackgroundImage = ((System.Drawing.Image)(null));
        }

        private void btnCancelar_MouseLeave(object sender, EventArgs e)
        {
            if (btnCancelar.Enabled)
            {
                btnCancelar.BackColor = dtoCorPrincipal.Cor;
                btnCancelar.ForeColor = dtoCorLetra.Cor;
                this.btnCancelar.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));
            }
        }

        private void btnCancelarkkkkkkk(object sender, EventArgs e)
        {
            btnCancelar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnCancelar.ForeColor = Color.Black;
            this.btnCancelar.BackgroundImage = ((System.Drawing.Image)(null));
        }

        private void btnExcluir_MouseLeave(object sender, EventArgs e)
        {
            if (btnExcluir.Enabled)
            {
                btnExcluir.BackColor = dtoCorPrincipal.Cor;
                btnExcluir.ForeColor = dtoCorLetra.Cor;
                this.btnExcluir.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));
            }
        }

        private void btnExcluirkkkkkkk(object sender, EventArgs e)
        {
            btnExcluir.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnExcluir.ForeColor = Color.Black;
            this.btnExcluir.BackgroundImage = ((System.Drawing.Image)(null));

        }

        private void btnSalvar_MouseLeave(object sender, EventArgs e)
        {
            if (btnSalvar.Enabled)
            {
                btnSalvar.BackColor = dtoCorPrincipal.Cor;
                btnSalvar.ForeColor = dtoCorLetra.Cor;
                this.btnSalvar.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));
            }
        }

        private void btnSalvarkkkkkkk(object sender, EventArgs e)
        {
            btnSalvar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnSalvar.ForeColor = Color.Black;
            this.btnSalvar.BackgroundImage = ((System.Drawing.Image)(null));
        }

        private void btnNovo_MouseLeave(object sender, EventArgs e)
        {
            if (btnNovo.Enabled)
            {
                btnNovo.BackColor = dtoCorPrincipal.Cor;
                btnNovo.ForeColor = dtoCorLetra.Cor;
                this.btnNovo.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));
            }
        }

        private void btnNovokkkkkkk(object sender, EventArgs e)
        {
            btnNovo.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnNovo.ForeColor = Color.Black;
            this.btnNovo.BackgroundImage = ((System.Drawing.Image)(null));
        }

        #endregion

        public void Limpar()
        {
            txtCodigo.Clear();
            rbttRepetirNao.Checked = true;
            rbttRepetirSim.Checked = false;
            rbttValorFixoNao.Checked = true;
            rbttValorFixoSim.Checked = false;
            txtValor.Clear();
            txtDescricao.Clear();
            txtFornecedor.Clear();
            txtPesquisar.Clear();
            cmbFrequencia.Text = "";
        }

        public void Habilitar(bool status)
        {
            tlp_dados.Enabled = status;
            btnNovo.Enabled = !status;
            btnEditar.Enabled = !status;
            btnExcluir.Enabled = !status;
            btnCancelar.Enabled = status;
            btnSalvar.Enabled = status;

            if (dtGridProdutos.Rows.Count <= 0)
            {
                btnEditar.Enabled = false;
                btnExcluir.Enabled = false;
            }
        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            Habilitar(true);
            Limpar();
            dtoGastoADD.GastoID = 0;

            txtDescricao.Focus();
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Habilitar(false);
            Limpar();
        }

        public void PopulaGrid()
        {
            DataRow dataRow;
            dataTableGridView = new DataTable();

            ListGastos = bllGasto.BuscarGastoCadastrados();
            if (ListGastos.Count > 0)
            {
                dataTableGridView.Columns.Add("GastoID", typeof(int));
                dataTableGridView.Columns.Add("Descrição", typeof(string));
                dataTableGridView.Columns.Add("Fornecedor ID", typeof(string));
                dataTableGridView.Columns.Add("Valor", typeof(string));
                dataTableGridView.Columns.Add("Frequencia", typeof(string));
                dataTableGridView.Columns.Add("Repetir", typeof(bool));
                dataTableGridView.Columns.Add("Valor Fixo", typeof(bool));


                foreach (DTOGasto dtoGasto in ListGastos)
                {
                    dataRow = dataTableGridView.NewRow();

                    dataRow["GastoID"] = dtoGasto.GastoID;
                    dataRow["Descrição"] = dtoGasto.Descricao;
                    dataRow["Fornecedor ID"] = (dtoGasto.FornecedorID);
                    dataRow["Valor"] = string.Format("{0:0.00}", dtoGasto.Valor);
                    switch (dtoGasto.Frequencia)
                    {
                        case 0: dataRow["Frequencia"] = ""; break;
                        case 1: dataRow["Frequencia"] = "Semanalmente"; break;
                        case 2: dataRow["Frequencia"] = "Mensalmente"; break;
                        case 3: dataRow["Frequencia"] = "Anualmente"; break;
                    }
                    dataRow["Repetir"] = dtoGasto.Repetir;
                    dataRow["Valor Fixo"] = dtoGasto.ValorFixo;


                    // Adiciona linha ao DataTable.
                    dataTableGridView.Rows.Add(dataRow);
                }
            }
            dtGridProdutos.DataSource = null;
            dtGridProdutos.DataSource = dataTableGridView;

        }

        public void PopulaGrid(string descricao, int codigo)
        {
            DataRow dataRow;
            dataTableGridView = new DataTable();

            ListGastos = bllGasto.PesquisarGastos(descricao, codigo);
            if (ListGastos.Count > 0)
            {
                dataTableGridView.Columns.Add("GastoID", typeof(int));
                dataTableGridView.Columns.Add("Descrição", typeof(string));
                dataTableGridView.Columns.Add("Fornecedor ID", typeof(int));
                dataTableGridView.Columns.Add("Valor", typeof(string));
                dataTableGridView.Columns.Add("Frequencia", typeof(string));
                dataTableGridView.Columns.Add("Repetir", typeof(bool));
                dataTableGridView.Columns.Add("Valor Fixo", typeof(bool));

                foreach (DTOGasto dtoGasto in ListGastos)
                {
                    dataRow = dataTableGridView.NewRow();

                    dataRow["GastoID"] = dtoGasto.GastoID;
                    dataRow["Descrição"] = dtoGasto.Descricao;
                    dataRow["Fornecedor ID"] = dtoGasto.FornecedorID;
                    dataRow["Valor"] = string.Format("{0:0.00}", dtoGasto.Valor);
                    switch (dtoGasto.Frequencia)
                    {
                        case 0: dataRow["Frequencia"] = ""; break;
                        case 1: dataRow["Frequencia"] = "Semanalmente"; break;
                        case 2: dataRow["Frequencia"] = "Mensalmente"; break;
                        case 3: dataRow["Frequencia"] = "Anualmente"; break;
                    }
                    dataRow["Repetir"] = dtoGasto.Repetir;
                    dataRow["Valor Fixo"] = dtoGasto.ValorFixo;


                    // Adiciona linha ao DataTable.
                    dataTableGridView.Rows.Add(dataRow);
                }


                dtGridProdutos.DataSource = null;
                dtGridProdutos.DataSource = dataTableGridView;
            }
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            dtoGastoADD.Descricao = txtDescricao.Text;
            if (!string.IsNullOrWhiteSpace(txtCodigo.Text))
                dtoGastoADD.GastoID = Int32.Parse(txtCodigo.Text);
            if (!string.IsNullOrWhiteSpace(txtValor.Text))
                dtoGastoADD.Valor = (float.Parse(txtValor.Text));
            if (!string.IsNullOrWhiteSpace(cmbFrequencia.Text))
            {
                dtoGastoADD.Frequencia = (cmbFrequencia.SelectedIndex);
            }


            dtoGastoADD.ValorFixo = rbttValorFixoSim.Checked;

            dtoGastoADD.Repetir = rbttRepetirSim.Checked;



            if (dtoGastoADD.GastoID == 0)
                bllGasto.Inserir(dtoGastoADD);
            else
                bllGasto.Atualizar(dtoGastoADD);
            Limpar();
            PopulaGrid();
            Habilitar(false);
        }

        private void dtGridProdutos_DataSourceChanged(object sender, EventArgs e)
        {
            if (dtGridProdutos.Rows.Count > 5)
                this.WindowState = FormWindowState.Maximized;

            if (dtGridProdutos.Rows.Count <= 0)
            {
                btnEditar.Enabled = false;
                btnExcluir.Enabled = false;
            }

        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            if (new frmMessageBox().Show("Tem certeza que deseja apagar este gasto permanentemente?", "Aviso", MessageBoxButtons.YesNoCancel) == System.Windows.Forms.DialogResult.Yes)
            {
                dtGridProdutos_CellClick(null, null);
                bllGasto.Excluir(dtoGastoADD.GastoID);

                Limpar();
                Habilitar(false);
                PopulaGrid();
                dtGridProdutos_CellClick(null, null);
            }
        }

        private void dtGridProdutos_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dtGridProdutos.CurrentCellAddress.X != -1 && dtGridProdutos.CurrentCellAddress.Y != -1)
            {
                dtoGastoADD.GastoID = Int32.Parse(dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["GastoID"].Value.ToString());
                txtCodigo.Text = dtoGastoADD.GastoID.ToString();
                txtDescricao.Text = dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["Descrição"].Value.ToString();

                dtoGastoADD.FornecedorID = Int32.Parse(dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["Fornecedor ID"].Value.ToString());
                txtValor.Text = dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["Valor"].Value.ToString();
                bool ValorFixo = bool.Parse(dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["Valor Fixo"].Value.ToString());
                bool Repetir = bool.Parse(dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["Repetir"].Value.ToString());

                txtFornecedor.Text = bllFornecedor.BuscarRazaoPorFornecedorID(dtoGastoADD.FornecedorID).Razao;

                rbttValorFixoSim.Checked = ValorFixo;

                rbttRepetirSim.Checked = Repetir;
                if (Repetir)
                    cmbFrequencia.Text = dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["Frequencia"].Value.ToString();
                else
                    cmbFrequencia.Text = "";

                //rbttValorFixoNao.Checked = !Repetir;


                Habilitar(false);
                btnEditar.Enabled = true;
            }
        }
      
        private void btnBuscarFornecedor_Click(object sender, EventArgs e)
        {
            new frmSelecionarGenerico("Fornecedor").ShowDialog();

            if (!string.IsNullOrEmpty(BLLUtilitarios.fornecedorNome))
            {
                txtFornecedor.Text = BLLUtilitarios.fornecedorNome;
                dtoGastoADD.FornecedorID = BLLUtilitarios.fornecedorID;
            }
            BLLUtilitarios.fornecedorID = 0;
            BLLUtilitarios.fornecedorNome = null;

        }

        private void toolStripButtonSair_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void ckb_exibirForaLinha_CheckedChanged(object sender, EventArgs e)
        {
            PopulaGrid();
            Limpar();
            Habilitar(false);
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            dtGridProdutos_CellClick(null, null);
            Habilitar(true);
            txtDescricao.Focus();
        }

      

        private void btn_pesquisar_Click(object sender, EventArgs e)
        {
            int cod = new int();

            Int32.TryParse(txtPesquisar.Text, out cod);
            PopulaGrid(txtPesquisar.Text + "%", cod);


        }

        private void btnCadastrarCategoria_Click(object sender, EventArgs e)
        {
            new frmCategoriaCadastro().ShowDialog();
        }

        private void btnCadastrarFornecedor_Click(object sender, EventArgs e)
        {
            new frmFornecedorCadastro().ShowDialog();
        }

        private void rbttRepetirSim_CheckedChanged(object sender, EventArgs e)
        {
            cmbFrequencia.Enabled = rbttRepetirSim.Checked;

            if (rbttRepetirSim.Checked)
                cmbFrequencia.SelectedIndex = 2;
            else
                cmbFrequencia.SelectedIndex = 0;
            rbttRepetirNao.Checked = !rbttRepetirSim.Checked;

        }

        private void rbttRepetirNao_CheckedChanged(object sender, EventArgs e)
        {
        }

        private void rbttValorFixoNao_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void rbttValorFixoSim_CheckedChanged(object sender, EventArgs e)
        {
            rbttValorFixoNao.Checked = !rbttValorFixoSim.Checked;

        }






    }
}
